package com.example.blogdemo1.common.utils;

import org.apache.commons.lang3.StringUtils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MarkdownToTextUtils {

    /**
     * 将 Markdown 转换为纯文本（去掉所有格式符号）
     * 如果处理后为空，则返回空字符串
     */
    public static String convert(String markdown) {
        if (StringUtils.isBlank(markdown)) {
            return "";
        }

        String pureText = markdown;

        // 1. 去掉多行代码块
        pureText = pureText.replaceAll("```[\\s\\S]*?```", "");

        // 2. 去掉单行代码块
        pureText = pureText.replaceAll("`.*?`", "");

        // 3. 去掉链接和图片
        pureText = pureText.replaceAll("!?\\[.*?]\\(.*?\\)", "");

        // 4. 去掉加粗
        pureText = pureText.replaceAll("\\*\\*(.*?)\\*\\*", "$1");

        // 5. 去掉斜体
        pureText = pureText.replaceAll("\\*(.*?)\\*", "$1");

        // 6. 去掉标题（直接删掉整行标题，而不是保留文字）
        pureText = pureText.replaceAll("\\s*#+.*", "");

        // 7. 去掉列表符号
        Pattern listPattern = Pattern.compile("^[\\-\\d\\.]+\\s+", Pattern.MULTILINE);
        Matcher listMatcher = listPattern.matcher(pureText);
        pureText = listMatcher.replaceAll("");

        // 8. 去掉连续空行
        pureText = pureText.replaceAll("\\n{2,}", "\n");

        // 9. 去掉前后空白
        pureText = pureText.trim();

        // 10. 如果去掉格式后为空，则直接返回空字符串
        if (StringUtils.isBlank(pureText)) {
            return "";
        }

        return pureText;
    }

    /**
     * 生成指定长度的摘要
     */
    public static String getSummary(String markdown, int maxLength) {
        String pureText = convert(markdown);
        if (pureText.length() <= maxLength) {
            return pureText;
        }
        return pureText.substring(0, maxLength) + "...";
    }
}